Основы цифровой обработки сигналов
Линейные стационарные системы
Основные определения
Система – это некий объект, который преобразует входной сигнал и порождает выходной сигнал, или отклик системы.
Линейная стационарная система – система, которая обладает свойствами линейности и стационарности.
Система называется линейной, если выход системы есть линейная комбинация отсчетов входного и выходного сигналов, в том числе задержанных во времени.
Система называется стационарной, если отклик системы не зависит от времени.
Способы описания линейных дискретных стационарных систем (ЛДСС)
Разностное уравнение
Разностное уравнение показывает, как из текущих и задержанных отсчетов входного сигнала, а также задержанных отсчетов выходного сигнала найти текущее значение выходного сигнала:
где – входной сигнал, – выходной сигнал, , – весовые коэффициенты.
Коэффициенты ЛДСС записываются в виде векторов:
Пример разностного уравнения:
Выразим отсюда текущие значения выходного сигнала:
Векторы коэффициентов здесь имеют вид:
Разностное уравнение можно представить схематически:
Здесь символ обозначает задержку сигнала на один отсчет (на один такт), треугольники с числами обозначают умножение отсчетов на соответствующие коэффициенты, знаком в круге обозначен сумматор.
По разностным уравнениям можно составлять схемы ЛДСС и реализовывать их в "железе".
Импульсная характристика
Импульсная характеристика ЛДСС – это реакция системы на единичный дискретный импульс.
Единичный дискретный импульс – аналог дельта-функции Дирака для дискретных сигналов, у него есть всего один отсчет, равный 1 в момент времени .
Отклик системы y(n) вычисляется с помощью дискретной свертки входного сигнала и импульсной характеристики :
Z-преобразование. Передаточная функция
Z-преобразование ставит в соответствие значениям сигнала во временной области отсчеты в комплексной частотной области:
Свойства Z-преобразования:
- ;
- ;
- ;
- .
В Z-области вычисления становятся гораздо проще и эффективнее. Поэтому часто анализ сложных систем осуществляют в Z-области, а затем производят обратное преобразование во временную область.
Z-форма выходного сигнала системы вычисляется как перемножение Z-форм входного сигнала и импульсной характеристики:
Отношение выхода и входа в Z-области называется передаточной функцией системы:
Это дробно-рациональная функция с полиномами в числителе и знаменателе:
Эти полиномы полностью определяются коэффициентами разностного уравнения.
Нуль-полюсная диаграмма
Переменная – это некоторая комплексная величина, которую можно изобразить на комплексной плоскости. Для передаточной функции определим точки, в которых она равна нулю (точки, в которых числитель равен нулю), и точки, в которых она обращается в бесконечность (точки, в которых знаменатель равен нулю). Корни числителя – это нули передаточной функции, а корни знаменателя – ее полюсы.
Пример:
Умножив числитель и знаменатель дроби на , получим
Приравняв числитель к нулю, найдем нули передаточной функции: и . Приравняв знаменатель к нулю, найдем полюсы: , .
Отобразим их на комплексной плоскости. Нули помечаются кружками, полюсы – крестиками.
АЧХ и ФЧХ
Амплитудно-частотная характеристика (АЧХ)
Амплитудно-частотная характеристика системы – это зависимость коэффициента усиления системы от частоты.
Система может усиливать сигнал в одних частотных полосах и подавлять в других:
Фазо-частотная характеристика (ФЧХ)
Фазо-частотная характеристика – это зависимость фазового сдвига от частоты.
К начальной фазе сигнала на конкретной частоте добавляется сдвиг, определяемый этой характеристикой.
Линейная стационарная ситема как фильтр
Задача линейных стационарных систем – изменять амплитуду и/или фазу входных сигналов. Этот процесс называется фильтрацией.
Например, одна из типичных задач для линейной стационарной системы – удаление нежелательных высокочастотных составляющих в сигнале и усиление полезной низкочастотной составляющей.
В дальнейшем такие системы мы будем называть фильтрами.
Для описания любого фильтра достаточно знать два вектора его коэффициентов:
Пример фильтрации сигнала в Engee
Перейдем в Engee и проанализируем фильтр с рассмотренными ранее коэффициентами. Данный фильтр представляет собой фильтр нижних частот, т.е. он пропускает частоты ниже 2 кГц и подавляет частоты начиная с 2 кГц. После прохождения сигнала через этот фильтр высокочастотные компоненты сигнала будут гораздо ниже по уровню, чем низкочастотные.
Построим сигнал, представляющий собой сумму двух синусоид с частотами 500 Гц и 4100 Гц.
using Plots, DSP;
fs = 10000;
t = [0:1/fs:1;];
x = cos.(2*pi*500*t) + cos.(2*pi*4100*t)/2;
Зададим коэффициенты фильтра в виде двух векторов a и b, затем создадим объект коэффициентов f с помощью функции
PolynomialRatio, содержащейся в библиотеке DSP. Чтобы отфильтровать синусоиду с высокой частотой и оставить только низкочастотный сигнал, воспользуемся функцией filt, содержащейся в библиотеке DSP. Входными параметрами функции являются исходный сигнал x и объект коэффициентов f. Построим графики исходного и отфильтрованного сигналов, выводя на экран по 100 первых точек каждого вектора.
b = [0.75, 0.5];
a = [1, 0.2, 0.1];
f = PolynomialRatio(b,a);
y1 = filt(f,x);
plot(t[1:100], x[1:100], xlabel="t", ylabel="сигнал", label="исходный сигнал")
plot!(t[1:100], y1[1:100], label="отфильтрованый сигнал")
Теперь найдем импульсную характристику фильтра с помощью функции impresp. Затем вычислим выход фильтра с помощью операции свертки с помощью функции conv. И, наконец, построим графики исходного и отфильтрованного сигналов.
h = impresp(f);
y2 = conv(x,h);
plot(t[1:100], x[1:100], xlabel="t", ylabel="сигнал", label="исходный сигнал")
plot!(t[1:100], y2[1:100], label="отфильтрованый сигнал")
Как мы видим из графиков, выход функции filt и выход функции conv в точности совпадают.
✏️Задание
Создайте в Engee сигнал, представляющий собой сумму четырех синусоид с частотами 300 Гц, 1100 Гц (амплитуда в 2 раза меньше, чем у синусоиды с частотой 300 Гц), 3700 Гц (амплитуда в 3 раза меньше) и 4300 Гц (амплитуда в 4 раза меньше). Затем проведите фильтрацию сигнала двумя рассмотренными выше способами. Постройте графики исходного и отфильтрованного сигналов. Проанализируйте, какие частоты сохранились в выходном сигнале, а какие отфильтровались и почему.
Решение
using Plots, DSP;
fs = 10000;
t = [0:1/fs:1;];
x = cos.(2*pi*300*t) + cos.(2*pi*1100*t)/2 + cos.(2*pi*3700*t)/3 + cos.(2*pi*4300*t)/4;
b = [0.75, 0.5];
a = [1, 0.2, 0.1];
f = PolynomialRatio(b,a);
y1 = filt(f,x);
plot(t[1:100], x[1:100], xlabel="t", ylabel="сигнал", label="исходный сигнал")
plot!(t[1:100], y1[1:100], label="отфильтрованый сигнал")
h = impresp(f);
y2 = conv(x,h);
plot(t[1:100], x[1:100], xlabel="t", ylabel="сигнал", label="исходный сигнал")
plot!(t[1:100], y2[1:100], label="отфильтрованый сигнал")